export default {
    install (Vue) {
        Vue.prototype._resetInput = (target, config) => {

          let value = target.value + ''

            if (value === '') {
              return ''
            }
            
            if (config.type === 'integer') {
                value = Number(value) + ''
                if (/[^0-9]*/.test(value)) {
                    value = value.replace(/[^0-9]*/g, '')
                }

                // 最大数值
                if (value !== '') {
                    let maxNumber = config.max ? config.max : 999999999999
                    value = Number(value) > maxNumber ? maxNumber + '' : value
                }

                // 最小数值
                if (value !== '') {
                    let minNumber = config.min || config === 0 ? config.max : 0
                    value = Number(value) < minNumber ? minNumber + '' : value
                }
            } else if (config.type === 'float') {
                if (/[^0-9 | .]*/.test(value)) {
                    value = value.replace(/[^0-9 | .]*/g, '')
                }

                let index = value.indexOf('.')
                // 不合法置空
                if (index === 0) {
                    value = ''
                }
                // 没有小数点，去前置0
                if (index < 0) {
                    value = Number(value) + ''
                }
                // 多余一个小数点保留整数
                if (value.split('.').length > 2) {
                    value = value.split('.')[0]
                }
                // 保留两位小数
                if (index > 0) {
                    value = value.substring(0, index + 3)
                }
                // 最大数值
                if (value !== '') {
                    let maxNumber = config.max ? config.max : 9999999999999.99
                    value = Number(value) > maxNumber ? maxNumber + '' : value
                }
                // 最小数值
                if (value !== '') {
                    let minNumber = config.min || config === 0 ? config.max : 0
                    value = Number(value) < minNumber ? minNumber + '' : value
                }

            } else if (config.type === 'float1') {
              if (/[^0-9 | .]*/.test(value)) {
                value = value.replace(/[^0-9 | .]*/g, '')
              }
  
              let index = value.indexOf('.')
              // 不合法置空
              if (index === 0) {
                value = ''
              }
              // 没有小数点，去前置0
              if (index < 0) {
                value = Number(value) + ''
              }
              // 多余一个小数点保留整数
              if (value.split('.').length > 2) {
                value = value.split('.')[0] + '.' + value.split('.')[1]
              }
              // 保留一位小数
              if (index > 0) {
                value = value.substring(0, index + 2)
              }
              // 最大数值
              if (value !== '') {
                let maxNumber = config.max ? config.max : 999999999999.99
                value = Number(value) > maxNumber ? maxNumber + '' : value
              }
              // 最小数值
              if (value !== '') {
                let minNumber = config.min || config === 0 ? config.max : 0
                value = Number(value) < minNumber ? minNumber + '' : value
              }
  
            } else if (config.type === 'float3') {
              if (/[^0-9 | .]*/.test(value)) {
                value = value.replace(/[^0-9 | .]*/g, '')
              }
  
              let index = value.indexOf('.')
              // 不合法置空
              if (index === 0) {
                value = ''
              }
              // 没有小数点，去前置0
              if (index < 0) {
                value = Number(value) + ''
              }
              // 多余一个小数点保留整数
              if (value.split('.').length > 2) {
                value = value.split('.')[0]
              }
              // 保留四位小数
              if (index > 0) {
                value = value.substring(0, index + 4)
              }
              // 最大数值
              if (value !== '') {
                let maxNumber = config.max ? config.max : 999999999999.99
                value = Number(value) > maxNumber ? maxNumber + '' : value
              }
              // 最小数值
              if (value !== '') {
                let minNumber = config.min || config === 0 ? config.max : 0
                value = Number(value) < minNumber ? minNumber + '' : value
              }
  
            } else if (config.type === 'float4') {
                if (/[^0-9 | .]*/.test(value)) {
                    value = value.replace(/[^0-9 | .]*/g, '')
                }

                let index = value.indexOf('.')
                // 不合法置空
                if (index === 0) {
                    value = ''
                }
                // 没有小数点，去前置0
                if (index < 0) {
                    value = Number(value) + ''
                }
                // 多余一个小数点保留整数
                if (value.split('.').length > 2) {
                    value = value.split('.')[0]
                }
                // 保留四位小数
                if (index > 0) {
                    value = value.substring(0, index + 5)
                }
                // 最大数值
                if (value !== '') {
                    let maxNumber = config.max ? config.max : 999999999999.99
                    value = Number(value) > maxNumber ? maxNumber + '' : value
                }
                // 最小数值
                if (value !== '') {
                    let minNumber = config.min || config === 0 ? config.max : 0
                    value = Number(value) < minNumber ? minNumber + '' : value
                }

            } else if (config.type === 'int') {
              // value = Number(value) + ''
              let maxLength = config.maxLength ? config.maxLength : value.length
              if (/[^0-9]*/.test(value)) {
                  value = value.replace(/[^0-9]*/g, '')
              }
              value = value.substring(0, maxLength)
            } else {
                let maxLength = config.maxLength ? config.maxLength : value.length
                value = value.substring(0, maxLength)
            }

            target.value = value

            return value
        }

        Vue.component('my-el-input', {
          props: ['value', 'max', 'min', 'maxLength', 'type', 'placeholder', 'disabled', 'readonly', 'append'],
          template: `
            <div class="el-input el-input--small " :class="{'is-disabled' : disabled, 'el-input-group el-input-group--append' : append}">
                <input
                    autocomplete="off"
                    size="small"
                    class="el-input__inner"
                    :readonly="true"
                    ref="myelinputOn"
                    v-bind:value="value"
                    v-bind:placeholder="placeholder"
                    v-bind:disabled="disabled"
                    v-bind:readonly="readonly"
                    v-on:input="$emit('input', _resetInput($event.target, {
                        max:max,
                        maxLength: maxLength,
                        type:type
                    }));$emit('change',_resetInput($event.target, {
                        max:max,
                        maxLength: maxLength,
                        type:type
                    }));inputorchange()"
                    v-on:blur="$emit('blur', _resetInput($event.target, {
                        max:max,
                        maxLength: maxLength,
                        type:type
                    }));blur()"
                    v-on:focus="$emit('focus', _resetInput($event.target, {
                        max:max,
                        maxLength: maxLength,
                        type:type
                    }));focus()">
                    <!--   此代码便于在elemetn组件中进行form表单校验 start-->
                    <el-input :value="value" class="detectionInput" ref="detectionInput"></el-input>
                    <!--   此代码便于在elemetn组件中进行form表单校验 end-->
                    <slot name="append"></slot>
            </div>
          `,
          methods:{
            inputorchange(){
              //input/change
            },
            blur(){
              //失去焦点
             ///此代码便于在elemetn组件中进行form表单校验 start
              this.$refs['detectionInput'].$el.children[0].focus();
              this.$refs['detectionInput'].$el.children[0].blur();
              //此代码便于在elemetn组件中进行form表单校验 end
            },
            focus(){
              //获取焦点
            },

          }
        })
    }
}
